package com.xiao.sulinggateway.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.reactive.CorsWebFilter;
import org.springframework.web.cors.reactive.UrlBasedCorsConfigurationSource;

/**
 * @author: 1322127758@qq.com
 * @date: 2022/3/13 12:15
 * @作用: 将前端所有过来的路径  添加跨域
 */
@Configuration
public class CorssWebFilterConfig {
    //添加进IOC容器才是拦截器
    @Bean
    //配置拦截器, 给所有请求添加跨域的请求头信息
    public CorsWebFilter corsWebFilter(){
        /***
         *作者:温志刚
         *作用: 配置跨域的请求头信息
         **/
        //该对象设置请求跨域信息
        CorsConfiguration corsConfiguration = new CorsConfiguration();
        //设置允许什么头跨域 不要写*可能浏览器报错 写 CorsConfiguration.ALL
        corsConfiguration.addAllowedHeader("*");
        //设置允许什么请求方式允许跨域 如:Post<Get..等;  *表示全部
        corsConfiguration.addAllowedMethod(CorsConfiguration.ALL);
        //设置允许什么请求来源能跨域,如Http://localhost:8080
        corsConfiguration.addAllowedOriginPattern("*");
        //设置是否允许带cookie
        corsConfiguration.setAllowCredentials(true);

        corsConfiguration.setMaxAge(3600L);

        //添加映射路径，我们拦截一切请求
        //参数一拦截什么路径; 参数二对请求信息追加的请求信息(请求参数)
        UrlBasedCorsConfigurationSource configurationSource = new UrlBasedCorsConfigurationSource();
        configurationSource.registerCorsConfiguration("/**",corsConfiguration);

        //返回追加数据后的请求
        return new CorsWebFilter(configurationSource);
    }
}
